#include <stdio.h>
#include <unistd.h>
#include <iot_gpio.h>
#include <iot_gpio_ex.h>
#include <iot_spi.h>
#include "oled.h"
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "gui.h"

#define OLED_TASK_STACK_SIZE 4096

//  /* task处理函数 */
// void OLedTask(void * para)
// {
//     printf("OLED task \r\n");
//     OLED_Init();               //初始化OLED  
//     OLED_Clear(0);    
//     //测试输出英文文字
//     GUI_ShowString(20,0,"OpenHarmony", 16 ,1  );
//     OLED_Display();
//     return NULL;
// }

/* task处理函数(Task5) */
void OLedTask(void * para)
{
    printf("OLED task \r\n");
    OLED_Init();               //初始化OLED
    OLED_Clear(0);

    while (1) {
        OLED_Clear(0);

        // 绘制不填充颜色的圆形
        // GUI_DrawCircle(64, 32, 1, 20); // 圆心坐标(64, 32)，半径20，颜色为白色

        // // 绘制填充颜色的长方形
        GUI_FillRectangle(10, 10, 100, 100, 1); // 起始坐标(10, 10)，结束坐标(50, 50)，颜色为白色

        // // 显示英文
        // GUI_ShowString(20, 0, "OpenHarmony", 16, 1);

        // // 显示学号
        // GUI_ShowString(20, 40, "2023095033", 16, 1);

        OLED_Display();
        sleep(3);
    }
    return NULL;
}

 /* 创建oled任务函数 */
void oled_demo(void)
{    
    int ret;
    oled_gpio_io_init();
    screen_spi_master_init(0); 
    osThreadAttr_t attr;
 
    attr.name = "OLedTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = OLED_TASK_STACK_SIZE;
    attr.priority = 20;
    if (osThreadNew((osThreadFunc_t)OLedTask, NULL, &attr) == NULL) {
        printf("[OLedExample] Falied to create LedTask1!\n");
    }
}
APP_FEATURE_INIT(oled_demo);